package com.tfjybj.itoo.teach.provider.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tfjybj.itoo.teach.entity.StudentEntity;
import com.tfjybj.itoo.teach.model.StudentModel;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

//import com.dmsdbj.itoo.tool.base.dao.BaseDaoSimplify;

/**
 * StudentDao接口
 * student表
 *
 * @author 田成荣
 * @version 2.0.0
 * @since 2.0.0 2018-11-08 19:34:10
 */
@Repository("studentDao")
public interface StudentDao extends BaseMapper<StudentEntity> {
	
	//region 模板生成：模糊查询
	/**
     * 根据姓名模糊查询student
     *
     * @param name  姓名
     * @return 模糊查询的student集合
     * @author 田成荣
     * @since 2.0.0 2018-11-08 19:34:10
     */
    List<StudentEntity> queryLikeName(@Param("name") String name);
	//endregion

    /* **********************************以下为非模板生成的内容********************************* */

    /**
     * 根据姓名和学号模糊查询student
     *
     * @param name  姓名
     * @param code  学号
     * @return 模糊查询的student集合
     * @author 郄子硕
     * @since 2.0.0 2018-11-17 21:27:48
     */
    List<StudentModel> queryLikeNameAndCode(@Param("name") String name, @Param("code") String code);

    /**
     * 根据学生id集 查询学生集和
     *
     * @param ids ids
     * @return ItooResult 学生表List
     * @author 郄子硕
     * @since 2.0.0 2018-11-23 20:45:15
     */
    List<StudentModel> selectListByStudentIds(@Param("list") List<String> ids);

    /**
     * 根据班级id集 查询学生集和
     *
     * @param ids ids
     * @return ItooResult 学生表List
     * @author 郄子硕
     * @since 2.0.0 2018-11-29 19:11:34
     */
    List<StudentModel> selectListByClassIds(@Param("list") List<String> ids);

    /**
     * 根据专业id集 查询学生集和
     *
     * @param ids ids
     * @return ItooResult 学生表List
     * @author 郄子硕
     * @since 2.0.0 2018-11-29 19:11:37
     */
    List<StudentModel> selectListByProfessionIds(@Param("list") List<String> ids);

    /**
     * 根据学院id集 查询学生集和
     *
     * @param ids ids
     * @return ItooResult 学生表List
     * @author 郄子硕
     * @since 2.0.0 2018-11-29 19:11:40
     */
    List<StudentModel> selectListByAcademyIds(@Param("list") List<String> ids);

    /**
     * 根据姓名和学号模糊查询student
     *
     * @param name  姓名
     * @param code  姓名
     * @param classId   行政班Id
     * @return 模糊查询的student
     * @author 郄子硕
     * @since 2.0.0 2018-11-17 21:23:58
     */
    List<StudentModel> queryLikeNameAndCodeAndClassId(@Param("name") String name, @Param("code") String code, @Param("classId") String classId);

    /**
     * 根据行政班id查询student
     *
     * @param classId  行政班id
     * @return 查询的student
     * @author 郄子硕
     * @since 2.0.0 2018-11-13 21:47:30
     */
    List<StudentModel> selectByClassId(@Param("classId") String classId);

    /**
     * 查询所有student
     *
     * @return 查询的student
     * @author 郄子硕
     * @since 2.0.0 2018-11-25 18:47:23
     */
    List<StudentModel> selectAllStudent();

    /**
     * 根据id查询student
     *
     * @param studentId  studentId
     * @return 查询的student
     * @author 郄子硕
     * @since 2.0.0 2018-11-13 21:47:30
     */
    List<StudentModel> selectByStudentID(@Param("studentId") String studentId);

    /**
     * 根据关键词模糊查询学号或姓名student
     *
     * @param strLike  姓名或学号关键词
     * @return 查询的student
     * @author 郄子硕
     * @since 2.0.0 2018-11-15 14:20:45
     */
    List<StudentModel> selectByCodeAndNameStrLike(@Param("strLike") String strLike);

    /**
     * 根据classId和关键词模糊查询学号或姓名student
     *
     * @param strLike  姓名或学号关键词
     * @param classId 行政班Id
     * @return 查询的student
     * @author 郄子硕
     * @since 2.0.0 2018-11-21 15:01:03
     */
    List<StudentModel> selectByCodeNameAndClassId(@Param("strLike") String strLike, @Param("classId") String classId);

    /**
     * 根据classID集合 查询学生信息
     *
     * @param ids ids
     * @return StudentModel
     * @author 郄子硕
     * @since 2.0.0 2018-11-15 15:44:38
     */
    List<StudentModel> selectListByClassId(@Param("list") List<String> ids);


    /**
     * 根据学生code查询学生信息
     * @param code
     * @return
     * @author 严文文
     * @since 2.0.0 2018-11-27 11:30:45
     */
     List<StudentModel>  queryStudentByCode(@Param("code") String code);

    /**
     * 查询所有Student
     *
     * @author 严文文
     * @since 2.0.0 2018-12-3 17:56:32
     */
    List<StudentModel> queryAll(@Param("gradeId") String gradeId);
}
